#了解卷积的整体过程以及padding的概念 padding就是零填充
import torch

#输入的一通道图片
input = [3,4,6,5,7,
         2,4,6,8,2,
         1,6,7,8,4,
         9,7,4,6,2,
         3,7,5,4,1]

input = torch.Tensor(input).view(1,1,5,5)#四个参数分别是Batch,Channel,width,height的数量/维度

#定义卷积层  padding=1 代表做了一圈的零填充 | stride=2 步长为2
conv_layer = torch.nn.Conv2d(1,1,kernel_size=3,stride=2,padding=1,bias=False)#前两个参数分别代表 输入是一个通道，输出也是一个通道

#定义卷积核
kernel = torch.Tensor([1,2,3,4,5,6,7,8,9]).view(1,1,3,3)#分别是输入通道，输出通道，卷积核的width和height
#将卷积核用于卷积层
conv_layer.weight.data = kernel.data

#查看最后卷积完毕的输出
output = conv_layer(input)
print(output)

#print stride默认为1的输出
# ([[[[ 91., 168., 224., 215., 127.],
#           [114., 211., 295., 262., 149.],
#           [192., 259., 282., 214., 122.],
#           [194., 251., 253., 169.,  86.],
#           [ 96., 112., 110.,  68.,  31.]]]],


#